(load "ex1-24.scm")

(define (expmod base exp m)
    (cond   ((= exp 0) 1)
            ((even? exp)
                (remainder  (*  (expmod base (/ exp 2) m)
                                (expmod base (/ exp 2) m))
                            m))
            (else
                (remainder  (* base (expmod base (- exp 1) m))
                            m))))

(display "\n========================================\n")
(search-for-primes EX1-14-TEST-NUM)
; (display (expmod 4 11 11))
; (expmod 4 11 11)
(display "\n========================================\n")

; 当指数是偶数时，需要指数减半了，但 expmod 却调用了 2 次，算上调用消耗，实际上比不减半还慢得多。